WSGI এবং ASGI সার্ভার ব্যবহারের নিয়ম

Web Development - জ্যাঙ্গো (Django) - Django ডিপ্লয়মেন্ট এবং Production Setup
156

Django অ্যাপ্লিকেশন তৈরি করার সময়, অ্যাপ্লিকেশনটি কোন সার্ভারে রান করবে তা নির্ধারণ করা অত্যন্ত গুরুত্বপূর্ণ। WSGI (Web Server Gateway Interface) এবং ASGI (Asynchronous Server Gateway Interface) হল দুটি প্রধান ইন্টারফেস যা Django অ্যাপ্লিকেশনকে ওয়েব সার্ভারের সাথে সংযোগ স্থাপন করতে সাহায্য করে। WSGI সাধারণত সিঙ্ক্রোনাস অ্যাপ্লিকেশনদের জন্য ব্যবহৃত হয়, এবং ASGI অ্যাসিঙ্ক্রোনাস অ্যাপ্লিকেশনদের জন্য ব্যবহৃত হয়।


১. WSGI সার্ভার

WSGI একটি স্ট্যান্ডার্ড প্রোটোকল যা ওয়েব সার্ভার এবং Python অ্যাপ্লিকেশনগুলির মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। এটি সিঙ্ক্রোনাস অ্যাপ্লিকেশনের জন্য উপযুক্ত, এবং Django প্রজেক্টে এটি ডিফল্ট সার্ভার হিসেবে ব্যবহৃত হয়।

WSGI কনফিগারেশন

Django-তে WSGI কনফিগারেশন সাধারণত wsgi.py ফাইলে থাকে, যেটি প্রজেক্টের মূল ডিরেক্টরির মধ্যে থাকে। এই ফাইলটি অ্যাপ্লিকেশনটি সার্ভারের সাথে যুক্ত করতে ব্যবহৃত হয়।

wsgi.py ফাইলের উদাহরণ:
import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = get_wsgi_application()
  • get_wsgi_application(): এটি Django অ্যাপ্লিকেশনকে WSGI সার্ভারের সাথে যুক্ত করতে ব্যবহৃত হয়।
  • os.environ.setdefault(): এটি Django এর সেটিংস ফাইলটি নির্ধারণ করে, যাতে WSGI সার্ভার সেটিংস ফাইলটি সঠিকভাবে খুঁজে পায়।

WSGI সার্ভার নির্বাচন

Django প্রজেক্টে WSGI রান করার জন্য জনপ্রিয় সার্ভারগুলো হচ্ছে:

  • Gunicorn: এটি একটি খুবই জনপ্রিয় WSGI সার্ভার যা উচ্চ পারফরমেন্স এবং সহজ কনফিগারেশনের জন্য ব্যবহৃত হয়।
  • uWSGI: আরেকটি শক্তিশালী WSGI সার্ভার, যেটি বেশি কনফিগারেবল এবং অনেক সার্ভার ফিচার সমর্থন করে।
Gunicorn ইনস্টল এবং রান:
  1. প্রথমে Gunicorn ইনস্টল করুন:

    pip install gunicorn
    
  2. তারপর, Gunicorn সার্ভারটি Django প্রজেক্টে রান করুন:

    gunicorn myproject.wsgi:application
    

এখানে myproject.wsgi:application হলো WSGI অ্যাপ্লিকেশনের রেফারেন্স যা আপনি আপনার প্রজেক্টের পাথ অনুযায়ী পরিবর্তন করবেন।


২. ASGI সার্ভার

ASGI হল একটি অ্যাসিঙ্ক্রোনাস স্ট্যান্ডার্ড প্রোটোকল যা Django অ্যাপ্লিকেশনকে অ্যাসিঙ্ক্রোনাস এবং সিঙ্ক্রোনাস উভয় ধরনের সার্ভিস প্রদান করতে সক্ষম করে। এটি রিয়েল-টাইম কমিউনিকেশন এবং ওয়েবসকেটের মতো অ্যাসিঙ্ক্রোনাস কার্যকলাপের জন্য উপযুক্ত।

ASGI কনফিগারেশন

Django 3.0 থেকে ASGI সমর্থন যুক্ত হয়েছে, এবং এটি সাধারণত asgi.py ফাইলে কনফিগার করা হয়, যা wsgi.py ফাইলের অনুরূপ। ASGI ফাইলটি অ্যাপ্লিকেশনটি অ্যাসিঙ্ক্রোনাস পরিবেশে রান করার জন্য ব্যবহৃত হয়।

asgi.py ফাইলের উদাহরণ:
import os
from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = get_asgi_application()

এখানে:

  • get_asgi_application(): এটি ASGI সার্ভারের সাথে Django অ্যাপ্লিকেশনকে যুক্ত করতে ব্যবহৃত হয়।

ASGI সার্ভার নির্বাচন

ASGI অ্যাপ্লিকেশনের জন্য কিছু জনপ্রিয় সার্ভার হল:

  • Daphne: এটি Django Channels এর একটি অংশ এবং একটি ASGI সার্ভার যা রিয়েল-টাইম অ্যাপ্লিকেশন এবং ওয়েবসকেট ব্যবস্থাপনা সমর্থন করে।
  • Uvicorn: এটি একটি দ্রুত এবং অ্যাসিঙ্ক্রোনাস ASGI সার্ভার যা খুবই জনপ্রিয় এবং ভালো পারফরম্যান্স প্রদান করে।
Daphne ইনস্টল এবং রান:
  1. প্রথমে Daphne ইনস্টল করুন:

    pip install daphne
    
  2. তারপর, Daphne সার্ভারটি Django প্রজেক্টে রান করুন:

    daphne myproject.asgi:application
    
Uvicorn ইনস্টল এবং রান:
  1. প্রথমে Uvicorn ইনস্টল করুন:

    pip install uvicorn
    
  2. তারপর, Uvicorn সার্ভারটি Django প্রজেক্টে রান করুন:

    uvicorn myproject.asgi:application
    

৩. WSGI vs ASGI

বৈশিষ্ট্যWSGI (Web Server Gateway Interface)ASGI (Asynchronous Server Gateway Interface)
অ্যাপ্লিকেশন প্রকারসিঙ্ক্রোনাসঅ্যাসিঙ্ক্রোনাস এবং সিঙ্ক্রোনাস
সমর্থিত কাজসাধারণ ওয়েব পেজ, সিঙ্ক্রোনাস APIওয়েবসকেট, রিয়েল-টাইম, লং পোলিং, অ্যাসিঙ্ক্রোনাস API
পারফরম্যান্সভালো, তবে কিছু লিমিটেশন রয়েছেউচ্চ পারফরম্যান্স এবং স্কেলেবিলিটি
ব্যবহারসাধারণ ওয়েব অ্যাপ্লিকেশনরিয়েল-টাইম অ্যাপ্লিকেশন, ওয়েবসকেট

সারাংশ

Django-তে WSGI এবং ASGI দুই ধরনের সার্ভার ব্যবহৃত হয়। WSGI সিঙ্ক্রোনাস অ্যাপ্লিকেশন জন্য ব্যবহৃত হয়, যেখানে ASGI অ্যাসিঙ্ক্রোনাস অ্যাপ্লিকেশন এবং রিয়েল-টাইম কার্যকলাপ (যেমন ওয়েবসকেট) পরিচালনার জন্য উপযুক্ত। Django-তে এগুলোর ব্যবহারের জন্য wsgi.py এবং asgi.py ফাইলগুলো কনফিগার করা হয়, এবং আপনি সার্ভার হিসেবে Gunicorn, uWSGI, Daphne, বা Uvicorn ব্যবহার করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...